git学习笔记

推荐一个学习git的教程:
廖雪峰:
http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000


1.本地搭建仓库

初始化建立新仓库:git init

关联一个远程仓库:git remote add origin git@server-name:path/repo-name.git

克隆远程仓库到本地:git clone (远程仓库地址)


2.分支操作

查看当前分支:git branch

创建新分支:git branch (分支名)

删除分支:git branch -d (分支名)

删除远程分支:git push origin --delete (分支名)

切换分支:git checkout (分支名)

合并指定分支的指定文件:git checkout (分支名) 文件名(文件夹名/*)

创建并切换分支(创建的是当前所有分支的副本):git checkout -b (分支名)

创建并切换分支(创建的是指定远程分支的副本):git checkout -b (分支名) origin/(分支名)

合并指定分支到当前分支:git merge (分支名)(合并发生冲突时,手动解决发生冲突的文件)

合并指定commit到当前分支:git cherry-pick commitID(不同分支commitID不同,所以不用指定分支名就能自动定位到某个分支提交的commit)

使用–no-ff方式合并并提交:git merge --no-ff -m "message" dev

强行删除没有合并过的分支:git branch -D (分支名)

把某个文件夹提取为单个分支:git subtree split --prefix=docs --squash -b docs

多个commit合并为1个(执行完后在vim中把第二个开始的pick改为squash):git rebase -i 最后一个commitid


3.版本/修改操作

回退到以前版本:git reset --hard HEAD^

通过commit id版本回退(比加–hard会保留文件的修改):git reset --hard commit_id

丢弃工作区的修改,或误删文件时(版本库中没被删除时)恢复文件:git checkout -- (filename)

丢弃暂存区修改,把暂存区的最新一次修改撤销掉,重新放回工作区:git reset HEAD (filename)

工作区删除文件后,在版本库中也删除该文件:git rm (filename)


4.提交到本地仓库

将文件添加到暂存区:git add (filename)(可以用.表示所有都添加)

将暂存区所有内容提交到当前分支:git commit -m "this is a message about this commit"


5.和远程仓库操作

关联后,第一次推送到远程仓库:git push -u origin master

推送最新修改到远程仓库:git push origin master

抓取远程最新提交:git pull

本地分支和远程分支建立连接:git branch -set-upstream dev origin/dev

强制覆盖远程仓库:git push origin master --force

删除远程分支:git push origin --delete 分支名称


6.储藏区

储存当前工作区:git stash

恢复stash:git stash apple

删除stash:git stash drop

恢复stash并删除stash:git stash pop


7.标签操作

给分支当前状态打标签:git tag (标签名)

给分支历史commit打标签:git tag (标签名) commit_id

创建带有说明的标签:git tag -a (标签名) -m "message" (commid_id)

删除标签:git tag -d (标签名)

将某个标签推送到远程:git push origin (标签名)

推送所有没推送到远程的标签:git push origin --tags

删除推送到远程的标签(先在本地删除该标签):git push origin :refs/tags/(标签名)


8.查看信息操作

查看工作区状态(有没有改变、改变有没有提交等):git status

查看文件修改内容:git diff (filename)

查看commit提交日志:git log

单行查看commit提交日志:git log --pretty=oneline

查看本地commit哪些没有push到远程:git cherry -v

查看命令历史记录(可以通过此方法查看commit id):git reflog

查看当前分支:git branch

查看分支合并图:git log --graph

查看储藏列表:git stash list

查看远程仓库信息:git remote

查看远程仓库详细信息:git remote -v

查看所有标签,结果按字母排序:git tag

查看某个标签信息:git show (标签名)

查看两个节点的区别:git diff 版本号1 版本号2

查看两个节点具体文件的区别:git diff 版本号1 版本号2 文件/文件夹名


9.配置操作

配置全局用户名:git config --global user.name (用户名)

配置全局用户邮箱:git config --global user.email (用户邮箱)

生成ssh密钥:ssh-keygen -t rsa -C (用户邮箱)

配置每个字符串的别名:git config --global alias.(别名) (被替换的名)

删除别名:直接到.git/config文件中的[alias]下删除

不将某些文件加入到版本控制中:创建.gitignore文件,把要忽略的文件名写进去


10.注意

①合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。

②在团队开发中,master分支应该是稳定的,仅用来发布新版本。干活都在dev分支上,团队的人都将自己的分支和dev分支合并,等到某个时候,dev再和master合并。

③在开发中遇到bug要跳出当前分支去别的分支操作时,可以现在当前的工作区储藏起来

④在多人合作时,当git push到远程仓库失败时,是因为远程仓库比你当前本地仓库要新,所以要先git pull,拉去远程仓库最新版到本地,如果如冲突要先解决冲突,然后再重新add、commit、push;如果提示“no tracking information”,则说明本地分支和远程分支的连接关系没有创建,要先将本地分支和远程分支建立连接。

11. 常见错误

(1) fatal: refusing to merge unrelated histories

解决方法:

git pull origin master --allow-unrelated-histories

小结

当多人合作时,你的开发流程:
2017/1/4 更新
① 假设项目仓库为A,fork一份到自己的仓库,为B

② 将远程B仓库克隆到本地:git clone (远程仓库地址) 

③ 进行修改,将修改添加到暂存区:git add (filename)或者git add ./
  
④ 将暂存区的文件都提交:git commit -m "message"
 
⑤ 检查本地仓库:git remote,你会发现有两个仓库origin是你自己的,upstream是你fork的即A

⑥ 拉去一份A仓库最新版到本地:git pull upstream master,如果有冲突的话解决冲突,没有冲突就表示两个自动合并了

⑦ 重新add和commit,即第③④步操作

⑧ 将合并后的分支推送到远程分支:git push origin master

⑨ 此时,代码被更新到你自己的仓库B,在github中发起一个pull request给仓库A

⑩ 等待仓库A的所有者进行合并就完成了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值