git常用命令
常用:
新建项目:
git clone + 地址
git branch -d 分支名(feature/test)
加代码
git add .
git commit -m "注释"
git push --set-upstream origin feature/test # 新建远程分支
git push 分支名(feature/test) origin 分支名(feature/test)
git branch 新分支
git checkout 新分支(切换分支)
git pull origin 主分支
# 常用git命令
git flow相关 http://www.ituring.com.cn/article/56870
git status ##查看本地当前分支状态
git reflog ##查看提交记录
git add <path> ##将本地修改加入索引库中
git commit -m "注释" ##将add的文件提交
git commit -am "注释" ##git add && git commit -m 的合并体
git commit -m 'initial commit'
git add forgotten_file
git commit --amend -m "second commit"##修补提交只产生一次提交记录
git rm <file> ##删除文件
git branch ##查看本地分支
git branch -r ##查看远程分支,需要先fetch一下将远程信息更新
git branch -a ##查看项目的分支们(包括本地和远程)
git branch <branchname> ##新建本地分支
git branch -d <branchname> ##删除本地分支
git checkout <branchname> ##切换分支
git checkout -b <branchname> ##新建一个本地分支并切换到该分支
git checkout -b <branchname> origin/<branchname> 根据远程分支创建本地分支
git checkout -- <file> ##撤销修改
git checkout . ##本地所有修改的。没有的提交的,都返回到原来的状态
git push origin <branchname> ##将本地分支代码推送到远程分支
git push origin :<branchname> ##删除远程分支,注意“:”前的空格
git pull ##从远程分支更新并将更新内容和本地分支合并
git fetch ##只从远程分支更新,不与本地分支合并
git stash ##把所有没有提交的修改暂存到stash里面。可用git stash pop回复。
git merge <branchname> ##合并某个分支到当前所在分支
git cherry-pick <commitid> ##把在其他分支的某次提交提交到该分支
git reset --hard <commitid> ##退到指定一次commit,不保留修改。如果想将远程分支也强制回退,执行git push -f
git reset --soft HASH ##返回到某个节点。保留修改
git rm --cached <file> ##删除对file_name.txt的跟踪,但保留本地文件
git rm --f <file> ##删除对file_name.txt的跟踪,且删除本地文件
git clean -df ##删除当前目录下没有被track过的文件和文件夹
git clean 参数
-n 显示 将要 删除的 文件 和 目录
-f 删除 文件
-df 删除 文件 和 目录
查看自己某个时间段的代码行数
git log --since='2017-07-28' --until='2017-08-03' --author="tandongjie" --pretty=tformat: --numstat|awk '{add += $1;subs +=$2} END {printf "insert:%s,delete:%s\n",add,subs}'
更新.gitignore文件
如果在创建.gitignore文件之前就已经add或者commit了,那么即使在.gitignore文件中写入新的规则,这些规则也不会起作用。
因为.gitignore文件只能作用于未被跟踪的文件(Untracked Files),也就是那些从来没有被Git记录过的文件(自添加以后,从未 add 及 commit 过的文件)。
如果文件曾经被 Git 记录过,那么.gitignore就对它们完全无效。
这时可以先把本地缓存删除(改变成未track状态),然后再提交:
git rm -r --cached .
git add .
git commit -m 'update .gitignore'
注意事项及解释:
1. 合并分支一律使用 git merge --no-ff <branch>(禁止直接使用git merge <branch>)
ps:如果合并不需要记录提交的记录,即将该分支的改动合并成一个提交记录,可以使用:
git merge --squash <branch> && git commit -am <msg>
2. git cherry-pick <commitid>
针对个别修复分支合并到master和developer分支使用,如果提交只有一两个,可以查看commitid依次提交到master和developer上面,当然也可以使用merge命令
3. 从远程分支创建本地分支:
如果用命令行,运行 git fetch,可以将远程分支信息获取到本地,再运行 git checkout -b local-branchname origin/remote_branchname ?就可以将远程
分支映射到本地命名为local-branchname 的分支。
4. 根据本地分支创建远程分支:
git push origin local_branch:remote_branch
这个操作,local_branch必须为你本地存在的分支,remote_branch为远程分支,如果remote_branch不存在则会自动创建分支。
5. 根据tag创建分支:
git checkout -b branch_name tag_name
6. 分支合并
如果要将开发中的分支(develop),合并到稳定分支(master)
首先切换的master分支:git checkout master
然后执行合并操作:git merge develop
7. 删除远程分支
git push origin :branch-name
冒号前面的空格不能少,原理是把一个空分支push到server上,相当于删除该分支。
8. 关联远程分支(pull/push 无需指定远程分支名称)
git branch --set-upstream-to=origin/<分支> <本地分支>
9. 取消当前分支的远程关联
git branch --unset-upstream
取消其他分支的远程关联
git branch --unset-upstream <分支名>