文章目录
  1. 1. Git 常用的不常用笔记 - 分享自@开发者头条
  2. 2. 1. Git 从服务器拉取新项目的步骤
  3. 3. 2. Git submodule
    1. 3.1. 1. 添加
    2. 3.2. 2. 删除
    3. 3.3. 3. 下载的工程带有submodule
      1. 3.3.1. 1). 下载所有子module
      2. 3.3.2. 2). 通过下面的命令
      3. 3.3.3. 3). Git submodule 的其他其命令
  4. 4. 3. Git将已经加入版本控制的文件(夹)删除
    1. 4.1. 1) 查看取消某个文件夹可能影响到的文件列表预览
    2. 4.2. 2) 将文件(夹)移除版本控制
    3. 4.3. 3) 提交
    4. 4.4. 4) 提交到远程服务器
  5. 5. 4. Git 将一个现有项目加入版本控制
    1. 5.1. 0) 将文件夹移除版本控制
    2. 5.2. 1) 确保该项目下有.gitignore文件并正确设置
    3. 5.3. 2) 初始化
    4. 5.4. 3) add & commit
    5. 5.5. 4) 关联远程仓库(远程仓库已经建立)
  6. 6. 先添加一个远程仓库,[origin]是别名,后面是地址
  7. 7. 然后关联[origin]的master分支(默认有这个分支)
  8. 8. 5. Git拉取远程分支并关联本地
  9. 9. submodule lready exists in the index
  10. 10. Git 新建一个Android Gradle项目并且添加了子模块,然后要将子模块单独设置为一个git submodule

Git 常用的不常用笔记 - 分享自@开发者头条

git 命令行 开发者头条

参考:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html

1. Git 从服务器拉取新项目的步骤

//1. git clone [url] #下面的示例中地址随便写的

git clone https://gitub.com/hello/world.git

//2. 切换到其他分支,可以将分支切换到某个远程分支并创建对应的本地分支

//git checkout -b [newBranch] –track [remote]/[branch],切换到dev分支,本地还没有创建dev的时候

git checkout -b dev –track origin/dev

//如果有子分支的话

//3. 子分支的初始化:遍历 –递归

git submodule foreach –recursive git submodule init

//4. 子分支切换到master(默认在某一个commit上面),不确认的话可以先git submodule一下

git submodule foreach –recursive git checkout master

2. Git submodule

1. 添加

git submodule add [仓库地址] [路径]

其中,仓库地址是指子模块仓库地址,路径指将子模块放置在当前工程下的路径。

注意:路径不能以/结尾(会造成修改不生效)、不能是现有工程已有的目录(不能顺利clone)

命令执行完成,会在当前工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息。添加完成以后,再将子模块所在的文件夹添加到工程中即可。

2. 删除

submodule的删除稍微麻烦点: 

  1. 首先,要在“.gitmodules”文件中删除相应配置信息。 

  2. 然后,执行

git rm –cached

将子模块所在的文件从git中删除。

3. 下载的工程带有submodule

1). 下载所有子module

当使用git clone下来的工程中带有submodule时,初始的时候,submodule的内容并不会自动下载下来的,此时,只需执行如下命令:

git submodule update –init –recursive

即可将子模块内容下载下来后工程才不会缺少相应的文件。

2). 通过下面的命令

git submodule

查看一下所有的子Module.可以看看是不是都在master分支或者你期望的分支上,如果不是都切回到主分支或者你需要的分支先.

3). Git submodule 的其他其命令

#可以把这些缩写配置到git配置文件~/.gitconfig中

[alias]

st = status -s

co = checkout

sbp = submodule foreach git pull

sbc = submodule foreach git co master

sbpr = submodule foreach –recursive git pull

sbcr = submodule foreach –recursive git checkout master

sbi = submodule foreach –recursive git submodule init

sbu = submodule foreach –recursive git submodule update

3. Git将已经加入版本控制的文件(夹)删除

参考:http://blog.csdn.net/zfphp/article/details/38012551 

参考:http://droidyue.com/blog/2014/07/25/untrack-versioned-file-in-git/(这个方法还没试过)

1) 查看取消某个文件夹可能影响到的文件列表预览

git rm -r -n –cached [Directory or File]* \-n这个参数表示预览

2) 将文件(夹)移除版本控制

git rm -r –cached [Directory or File]* \没有-n了

3) 提交

git commit -m “移除[Directory or File]的版本控制”

后面这两步就是最普通的提交和推送到远程了

4) 提交到远程服务器

git push origin master

4. Git 将一个现有项目加入版本控制

0) 将文件夹移除版本控制

如果该项目(文件夹)已经是某个大的Git项目中的一个子项目,先把对应文件夹在父项目所在Git中的版本控制移除

1) 确保该项目下有.gitignore文件并正确设置

2) 初始化

git init

3) add & commit

git add . # 添加所有文件

git commit -m “初次提交”

4) 关联远程仓库(远程仓库已经建立)

先添加一个远程仓库,[origin]是别名,后面是地址

git remote add [orign] [https://xxx.git]

然后关联[origin]的master分支(默认有这个分支)

git branch –set-upstream master orign/master

其实我们也可以直接修改.git/config的配置来进行添加和关联远程仓库

5. Git拉取远程分支并关联本地

先不要打开 Android Studio, 因为很多不应该Git版本控制as配置文件加入了很容易修改,先checkout 到master(如果当前不在某个分支的haunted)

git checkout -b local-branchname origin/remote_branchname

submodule lready exists in the index

我现在要把当前项目的其中一个文件夹改成submodule 

http://stackoverflow.com/questions/12898278/issue-with-adding-common-code-as-git-submodule-already-exists-in-the-index

Git 新建一个Android Gradle项目并且添加了子模块,然后要将子模块单独设置为一个git submodule

  1. 现在服务器新建对应的空Git项目,主工程和子模块都新建一个,注意不要初始化
  2. 然后进入子模块,将子模块和远程Git绑定(init,add,commit,reomte.add,push等),注意不要把无关的文件添加到版本控制中去
  3. 然后建议将子模块先移出去(不要打开AndroidStudio)
  4. 然后开始将父模块和远程绑定(同2)
  5. 然后对父模块执行submodule.add等操作即可将子模块添加进来,注意:执行以下submodule.checkout master,一开始submodule不是在主分支上的(只是指向了一个commit_id.
  6. 然后就OK了.

** 获取远程代码并覆盖本地代码**

  1. git fetch –all
  2. git reset –hard origin/master

查看远程仓库日志

//查看三条提交日志记录

git log origin/master -n 3

//将未提交的代码暂存,切换分支后取出

使用git stash 将A分支暂存起来,然后在某一个分支(如master分支)新建一个分支B,然后在B分支上使用git stash pop 将修改弹出到B分支上,然后这些修改就在B分支上了。然后我们又可以愉快的玩耍了~

查看原文

文章目录
  1. 1. Git 常用的不常用笔记 - 分享自@开发者头条
  2. 2. 1. Git 从服务器拉取新项目的步骤
  3. 3. 2. Git submodule
    1. 3.1. 1. 添加
    2. 3.2. 2. 删除
    3. 3.3. 3. 下载的工程带有submodule
      1. 3.3.1. 1). 下载所有子module
      2. 3.3.2. 2). 通过下面的命令
      3. 3.3.3. 3). Git submodule 的其他其命令
  4. 4. 3. Git将已经加入版本控制的文件(夹)删除
    1. 4.1. 1) 查看取消某个文件夹可能影响到的文件列表预览
    2. 4.2. 2) 将文件(夹)移除版本控制
    3. 4.3. 3) 提交
    4. 4.4. 4) 提交到远程服务器
  5. 5. 4. Git 将一个现有项目加入版本控制
    1. 5.1. 0) 将文件夹移除版本控制
    2. 5.2. 1) 确保该项目下有.gitignore文件并正确设置
    3. 5.3. 2) 初始化
    4. 5.4. 3) add & commit
    5. 5.5. 4) 关联远程仓库(远程仓库已经建立)
  6. 6. 先添加一个远程仓库,[origin]是别名,后面是地址
  7. 7. 然后关联[origin]的master分支(默认有这个分支)
  8. 8. 5. Git拉取远程分支并关联本地
  9. 9. submodule lready exists in the index
  10. 10. Git 新建一个Android Gradle项目并且添加了子模块,然后要将子模块单独设置为一个git submodule