git常用命令

一、git常用命令

重点:提交本地分支到远程分支

git push origin test:master         // 提交本地test分支作为远程的master分支 //好像只写这一句,远程的github就会自动创建一个test分支
git push origin test:test              // 提交本地test分支作为远程的test分支

实例:git push origin 20180228mybank-fbi:20180228mybank-fbi

1、git clone

  • 获取一个url对应的远程Git repo,创建一个local copy;

  • git clone[url];

  • clone下来的repo会以url最后一个斜线后面的名称命名,创建一个文件夹,如果想要指定特定的名称,可以git clone [url] newname指定;
2、git status
  • 查询状态;
  • git status -s: -s表示short, -s的输出标记会有两列,第一列是对staging区域而言,第二列是对working目录而言.
图一
3、git log(show commit history of a branch)
  • 查看提交的历史记录
  • 注意:在开发过程中多人修改同一个文件很常见,所以可以通过此命令查看修改信息记录
图二
4、git add
  • 在提交之前,Git有一个暂存区(staging area),可以放入新添加的文件或者加入新的改动;
  • commit时提交的改动是上一次加入到staging area中的改动,而不是我们disk上的改动;
  • git add.
  • 会递归地添加当前工作目录中的所有文件;
  • 包括一些编译器的临时文件和编译文件都会被整体add;
  • "."使用点号时,请先git status 查看当前工作区域状态,防止临时文件也被添加
  • git add[文件路径]
  • 这样可以直接具体到某个文件
5、git commit
  • 提交已经被add进来的改动;
  • git commit -m “the commit message"
  • git commit -a
  • 会先把所有已经track的文件的改动add进来,然后提交(有点像svn的一次提交,不用先暂存). 对于没有track的文件,还是需要git add一下;
  • git commit --amend
  • 增补提交. 会使用与当前提交节点相同的父节点进行一次新的提交,旧的提交将会被取消;
6、git revert(类似于svn的revent)
  • 反转撤销提交.只要把出错的提交(commit)的名字(reference)作为参数传给命令就可以了.
  • git revert HEAD: 撤销最近的一个提交.
  • git revert会创建一个反向的新提交,可以通过参数-n来告诉Git先不要提交
7、git rm
  • git rm file: 从staging区移除文件,同时也移除出工作目录.
  • git rm --cached: 从staging区移除文件,但留在工作目录中.
  • git rm --cached从功能上等同于git reset HEAD,清除了缓存区,但不动工作目录树.
8、git stash
  • 把当前的改动压入一个栈.
  • git stash将会把当前目录和index中的所有改动(但不包括未track的文件)压入一个栈,然后留给你一个clean的工作状态,即处于上一次最新提交处.
  • git stash list会显示这个栈的list.
图三
  • git stash apply:取出stash中的上一个项目(stash@{0}),并且应用于当前的工作目录.
图四
  • 也可以指定别的项目,比如git stash apply stash@{1}.
  • 如果你在应用stash中项目的同时想要删除它,可以用git stash pop
  • 删除stash中的项目:
  • git stash drop: 删除上一个,也可指定参数删除指定的一个项目.
  • git stash clear: 删除所有项目.
9、git branch
  • git branch可以用来列出分支,创建分支和删除分支.
  • git branch -v可以看见每一个分支的最后一次提交.
  • git branch: 列出本地所有分支,当前分支会被星号标示出.
10、git merge
  • 把一个分支merge进当前的分支.
  • git merge [alias]/[branch]
  • 把远程分支merge到当前分支
11、git fetch(download new branches and data from a remote repository.)
  • git fetch将会取到所有你本地没有的数据,所有取下来的分支可以被叫做remote branches,它们和本地分支一样(可以看diff,log等,也可以merge到其他分支),但是Git不允许你checkout到它们.
12、git pull(pull == fetch + merge FETCH_HEAD)
  • git pull会首先执行git fetch,然后执行git merge,把取来的分支的head merge到当前分支.这个merge操作会产生一个新的commit.
  • 如果使用--rebase参数,它会执行git rebase来取代原来的git merge.
13、git rebase
  • --rebase不会产生合并的提交,它会将本地的所有提交临时保存为补丁(patch),放在”.git/rebase”目录中,然后将当前分支更新到最新的分支尖端,最后把保存的补丁应用到分支上.
  • rebase的过程中,也许会出现冲突,Git会停止rebase并让你解决冲突,在解决完冲突之后,用git add去更新这些内容,然后无需执行commit,只需要:
  • git rebase --continue就会继续打余下的补丁.
  • git rebase --abort将会终止rebase,当前分支将会回到rebase之前的状态.
14、git push
  • git push [alias] [branch]
  • git push origin master
  • 将会把当前分支merge到alias上的[branch]分支.如果分支已经存在,将会更新,如果不存在,将会添加这个分支.
  • 如果有多个人向同一个remote repo push代码, Git会首先在你试图push的分支上运行git log,检查它的历史中是否能看到server上的branch现在的tip,如果本地历史中不能看到server的tip,说明本地的代码不是最新的,Git会拒绝你的push,让你先fetch,merge,之后再push,这样就保证了所有人的改动都会被考虑进来.
15、关于切分支的异常处理
  • fatal: unable to stat 'node_modules/gulp-connect/node_modules/gulp-util/node_modules/dateformat/node_modules/meow/node_modules/normalize-package-data/node_modules/validate-npm-package-license/node_modules/spdx-expression-parse/parser.generated.js': Filename too long
  • git config --system core.longpaths true
  • 也可以仅设置当前项目:
  • git config core.longpaths true
  • 查看设置状态:
  • git config core.longpaths
16、git checkout -b (创分支)
git checkout -b [分支名称]
git branch[分支名称] 切换到该分支
git pull #git会提示我们相应的操作命令(如图五所示)
 
git branch --set-upstream-to=origin/<branch> ANTM0253544_20171103_bkloansceneprod
 
git branch --set-upstream-to=origin/ANTM0253544_20171103_bkloansceneprod ANTM0253544 _20171103_bkloansceneprod
 
图五
posted @ 2018-02-28 18:49  李清欣  阅读(167)  评论(0编辑  收藏  举报