Skip to main content

Git常用命令

git 设置和取消代理

git config --global https.proxy http://127.0.0.1:1080
git config --global https.proxy https://127.0.0.1:1080
git config --global --unset http.proxy
git config --global --unset https.proxy

Git-server配置

建立一个 git 用户负责 Git 的管理:

$ useradd -m -s /bin/bash git

建立 Git 仓库目录:

$ mkdir -p /git/repos
$ chown git:git /git/repos

Git-client配置

git-client 机器上为开发者创建帐户,git-client1 上建立用户 user1git-client2 上建立用户 user2,如:

$ useradd -m -s /bin/bash user1

user1user2 都通过 ssh 共用 git-server 上的 git 帐户,这是最简单的 ssh 使用方式。

为了方便,user1user2 都将自己的公钥放到 git-server 上,就不用每次输入密码了:

$ ssh-keygen
$ sh-copy-id git@git-server

使用示例

git-server 上创建一个裸版本库:

$ git init --bare /git/repos/test.git

这时 test.git 是一个空的版本库,我们可以将它 clone 到本地,或者也可以将本地已经初始化的 git 推送到该版本库,比如:

$ git init
$ git remote add orgin git@git-server:/git/repos/test.git
$ git push origin master

当需要克隆版本库时做如下操作:

$ git clone git@git-server:/git/repos/test.git

常用命令介绍

配置 Git 基本信息:

$ git config --global user.name "Your Name"
$ git config --global user.email "email@example.com"

$ git config --global -l

创建新的 Git 仓库:

$ git init

检出仓库:

$ git clone /path/to/repository
$ git clone username@host:/path/to/repository

添加与提交:

$ git add <filename>
$ git add *

$ git commit -m "代码提交信息"

推送改动:

$ git remote add origin <server>
$ git push origin master

分支操作:

//创建一个新分支
$ git branch feature_x
//创建一个叫做“feature_x”的分支,并切换过去
$ git checkout -b feature_x
//切换回主分支:
$ git checkout master
//查看分支
$ git branch -l
//删除分支
$ git branch -d feature_x

更新与合并:

//获取并合并远端的改动
$ git pull
//合并其他分支到你的当前分支
$ git merge <branch>

标签:

//创建标签
$ git tag -a v1.0 -m "Version 1.0"
//推送tag
$ git push origin v1.0

撤销本地改动:

$ git checkout -- <filename>
$ git reset --hard commitId

.gitignore的使用

.gitignore 只能忽略那些原来没有被 track 的文件,如果某些文件已经被纳入了版本管理中,则修改 .gitignore 是无效的。

为了能重新忽略那些已经被 track 的文件,例如停止 tracking 一个文件但是又不从仓库中删除它。可以使用以下命令:

$ git rm --cached filename

上面这个命令用于删除单个缓存文件。

删除缓存目录使用以下命令:

$ git rm -rf --cached foldername

如果你想忽略的文件或者文件夹比较多,无法一个一个的删除。

重置所有缓存,提交后刷新忽略文件(下面这种方法经过测试,可行) 运行命令:

$ git rm -r --cached .

上面这个命令将会移除所有的缓存索引,然后运行再运行以下命令添加所有的文件:

$ git add .
$ git commit -m “.gitignore is now working”

合并时支持忽略部分文件

  1. 实现 dev 分支根目录下的文件 demo.txt,不合并到 master 分支上;
  2. 实现 dev 分支文件 /common/src/main/resources/demo.yml,不合并到 master 分支上;

首先在根目录下运行命令,启用忽略文件设置:

git config merge.ours.driver true

在 dev 分支上建立 .gitattributes 文件并提交,内容如下:

demo.txt merge=ours
/common/src/main/resources/demo.yml merge=ours

切换到 master 分支上,执行 merge 操作:

git checkout master
git merge dev
caution

如果 dev 的某个文件修改不需要合并到 master ,则 master 的文件修改时间必须在 dev 的修改时间之后。 在示例中,需要先修改 dev 分支的文件并提交,再修改 master 的文件并提交,然后合并。