git常用命令 for mac

git常用命令 for mac

Tips:不要创建与分支同名的tag和同目录文件夹。


创建

  • 选择一个合适的地方,创建一个空目录
$ mkdir gitforwork
$ cd gitforwork
$ pwd
/Users/lixingdong/gitforwork
  • 通过git init命令把这个目录变成Git可以管理的仓库
$ git init
Initialized empty Git repository in /Users/lixingdong/gitforwork/.git/
  • 查看目录下内容
$ ls -ah
.   ..  .git

克隆

$ ls -al ~/.ssh
$ pbcopy < ~/.ssh/id_rsa.pub

粘贴到SSH key中

  • 使用git clone拷贝一个Git仓库到本地
$ git clone git@github.com:SilenceLee17/first.git

查看仓库

  • 使用git status查看仓库当前的状态
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working directory clean

设置.gitignore

  • 设置全局.gitignore
$ git config --global core.excludesfile ~/.gitignore_global
  • 设置xcode项目需要的忽略项:
$ vi ~/.gitignore_global
## Build generated
build/
DerivedData

## Various settings
*.pbxuser
!default.pbxuser
*.mode1v3
!default.mode1v3
*.mode2v3
!default.mode2v3
*.perspectivev3
!default.perspectivev3
xcuserdata

## Other
*.xccheckout
*.moved-aside
*.xcuserstate
project.xcworkspace
.DS_Store
.swp

# 忽略Xcode本地用户配置信息
*.xcuserstate
*.xcuserdatad/
xcuserdata/
xcshareddata/
.metadata/
# 忽略`Pods/`和`Podfile.lock`
Pods/
Podfile.lock

添加

  • 使用git add添加需要提交的文件
$ git add README.md
  • git add . 或者 git add —all

提交所有文件。

  • 中文文件名乱码
$ git config --global core.quotepath false

git 默认中文文件名是 xx%,core.quotepath设为false的话,就不会对0x80以上的字符进行quote。中文显示正常。

  • 文件名称带空格
    在文件名上加个单引号就可以了,如 cd ‘program files’

提交

  • 使用git commit提交
$ echo "# first" >> README.md
$ git add README.md
$ git commit -m "first commit"

git commit -m “Adding files”
如果您不使用-m,会出现编辑器来让你写自己的注释信息。

  • 使用git commit -a提交
    当我们修改了很多文件,而不想每一个都add,想commit自动来提交本地修改,我们可以使用-a标识。
    git commit -a -m “Changed some files”
    git commit 命令的-a选项可将所有被修改或者已删除的且已经被git管理的文档提交倒仓库中。
    千万注意,-a不会造成新文件被提交,只能修改。

更新

  • 设置默认路径并使用git pull更新
$ git remote remove origin
$ git remote add origin git@github.com:SilenceLee17/first.git
$ git pull
  • 从非默认位置更新到指定的url
$ git pull git@github.com:SilenceLee17/first.git

推送

  • 配置用户信息
$ git config --global user.name 'lixingdong'
$ git config --global user.email '[email protected]'
  • 使用git push推送
$ git push

使用方法与git pull类似。表示当前分支自动与唯一一个追踪分支进行合并。

  • 创建分支,push到服务器
$ git push origin develop

分支与合并

  • 创建并更改分支
$ git checkout -b dev
  • 更改提交到主分支,则需切换回master分支,然后使用合并
$ git checkout master
$ git merge --no-ff dev
  • 删除分支,我们使用-d标识
$ git branch -d dev

如果没有合并,删除分支

$ git branch -D dev

git branch -d -r branchname 删除远程branchname分支

  • 查看各个分支最后一次提交
$ git branch -v

git branch -a 列出本地分支和远程分支
git branch -r 列出远程分支

  • 重命名分支

git branch -m | -M oldbranch newbranch 重命名分支,如果newbranch名字分支已经存在,则需要使用-M强制重命名,否则,使用-m进行重命名。

  • 关联本地与远端分支
 $ git branch --set-upstream-to=origin/<branch> dev

备份

场景:当前工作区内容已被修改,但是并未完成。如需要还原代码解决更高优先级问题,然后继续完成修改。

  • 备份当前的工作区的内容
$ git stash

从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。

  • 恢复工作区的相关内容
$ git stash pop

从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。

  • 显示Git栈内的所有备份
$ git stash list
  • 清空Git栈
$ git stash clear
  • 恢复工作区指定内容
$ git stash apply stash@{0}

查看历史

  • 列出文件的所有改动历史
$ git log --pretty=oneline 文件名
  • 某次提交的具体修改
$ git show ade53529419ddad8e0bab105faebd006c04af333

数字为每次提交形成的哈希值

$ git log -p -1

-p 选项展开显示每次提交的内容差异,用 -1 则仅显示最近的一次更新


属性配置

  • Git会按照你需要自动为大部分的输出加上颜色
$ git config --global color.ui true

–global参数是全局参数,也就是这些命令在这台电脑的所有Git仓库下都有用。

  • 简写git命令
    st就表示status,co表示checkout,ci表示commit,br表示branch,unstage表示reset HEAD。
$ git config --global alias.co checkout
$ git config --global alias.br branch
$ git config --global alias.ci "commit -a"
$ git config --global alias.st status
$ git config --global alias.pl "pull -r"
$ git config --global alias.unstage 'reset HEAD'
  • 用git last就能显示最近一次的提交
$ git config --global alias.last 'log -1'
  • git lg配置日志打印
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"
  • 设置文本编辑器和差异分析工具
$ git config --global core.editor /usr/bin/vim 
$ git config --global merge.tool vimdiff

子模块

  • 下载的工程带有子模块
$ git submodule update --init --recursive
  • 添加子模块
$ git submodule add 仓库地址 路径

工程根路径下生成一个名为“.gitmodules”的文件,其中记录了子模块的信息

  • 更新子模块
$ git submodule update
  • 删除子模块
    ubmodule的删除稍微麻烦点:首先,要在“.gitmodules”文件中删除相应配置信息。然后,执行“git rm –cached ”命令将子模块所在的文件从git中删除。

恢复

  • reset命令3种方式
$ git reset --mixed 

此为默认方式,不带任何参数的git reset相同。回退到某个版本时,保留源码,回退commit和index信息。

$ git reset --soft

回退到某个版本时,回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可。

$ git reset --hard

彻底回退到某个版本。


优选

cherry-pick就是从不同的分支中捡出一个单独的commit,并把它和你当前的分支合并。

$ git cherry-pick [commit_hash]

还原

还原已经提交的修改
此次操作之前和之后的commit和history都会保留,并且把这次撤销作为一次最新的提交。
git revert是提交一个新的版本,将需要revert的版本的内容再反向修改回去,版本会递增,不影响之前提交的内容。

 git revert HEAD                  撤销前一次 commit
git revert HEAD^               撤销前前一次 commit
git revert commit-id

自动补全

  • 安装bash-completion
    1.用homebrew安装bash-completion软件包:brew install bash-completion
    2.把下面内容添加到你的~/.bash_profile:
if [ -f $(brew --prefix)/etc/bash_completion ]; then
    . $(brew --prefix)/etc/bash_completion
fi
  • git自动补全
$ cd /usr/local/opt/bash-completion/etc/bash_completion.d
$ curl -L -O https://raw.github.com/git/git/master/contrib/completion/git-completion.bash
$ brew unlink bash-completion
$ brew link bash-completion

猜你喜欢

转载自blog.csdn.net/a184251289/article/details/50357941
今日推荐