用过至少三种git软件。没有一款好用的,曾经被迫使用sourceTree。感觉还不如Xcode集成的,个人还是推荐使用命令行操作。至于分支图建议网页浏览。
git命令:
git clone 地址 下载项目(地址在你当前位置,通过cd切换你想去的目录)
rm -fr .git 删除Xcode git依赖
#代码提交
git pull // 从remote拉取最新的代码
git add 文件名 //提交该文件代码到暂缓区
git add . // 提交所有代码到暂缓区
git commit -m “” // 生成一条提交记录
git commit -a -m “” // 组合提交
git push // 推送代码到远端
git push origin devel // 推送本地代码到远端某个分支
#代码操作
git checkout 文件名 // 撤销该文件的修改
git checkout . // 撤销所有文件修改
git reset 文件名 // 把该文件从暂缓区还原回来,通常用于不想提交某个文件
gi reset HEAD // 回退所有内容到上一个版本
git reset HEAD a.py // 回退a.py这个文件的版本到上一个版本
git reset --soft HEAD~3 // 向前回退到第3个版本
git reset 057d // 回退到某个版本提交
git reset --soft 057d // 回退到某次提交,并保留本地代码。通常用于合并commit
git reset --hard 057d //回退到某次提交,不保留本地代码。强制回退,本地代码会被销毁
git revert HEAD // 回退到上一次提交的状态,按照某一次的commit完全反向的进行一次commit
git revert 057d // 撤销057d这次的提交记录
git stash [save message] // 保存代码到缓存区,对当前的暂存区和工作区状态进行保存。
git stash list // 列出所有保存的进度列表
git stash pop [--index] // 从缓存区把最近一次保存的代码提取到本地
git log --grep // 在提交日志中查找关键字,查找某次提交基线
#分支相关
git branch test 创建本地分支
git checkout -b develop 创建本地分支develop并切换到该分支
git checkout -b develop 057d 创建本地分支基于某次提交
git push -d origin develop 删除远程分支develop
git branch -D develop 删除本地分支develop
git branch —all 查看全部分支(远程)
git pull -p 拉取分支
git merge develop 合并develop分支到当前分支
git rebase 也是合并分支但是合并后会自动把分支的提交按照时间线对齐, 显得提交历史很干净。但是一旦rebase出现冲突,你需要按照提交的次数不停的去解决冲突。git merge则只需要解决一次冲突。
git rebase --continue
git rebase --abort
git rebase的过程中,可能会出现冲突(conflict)。此时git会停止rebase并会让你去解决冲突,解决完冲突后,需要使用git add 命令去更新暂缓区,然后继续git rebase --continue,继续进行分支合并。
你也可以用git rebase --abort来终止rebase,并且分支会回到rebase开始前的状态。
#git命令缩写
git config --global alias.co checkout
git config --global alias.br branch
git config --global alias.ci commit
git config --global alias.st status
git config --global alias.cp cherry-pick
#常见问题
1. pull之前,本地代码可能会有冲突。此时需要先把改变的工作放到本地缓存区。通过git stash 的形式保存代码到缓存区,pull后再git stash pop 解决冲突后提交代码。
2.commit代码的时候出现冲突,可能需要merge代码,此时会出现两条提交记录,如果不想要,可以通过git reset --soft 的形式回退到remote ci,然后重新ci合并提交。