Skip to content

Git 常用操作命令

一、Git 完整复制别人的代码库到新仓库

1、从原地址克隆一份到本地

bash
git clone --bare xxxxx.git

2、创建一个新仓库

3、推送到新仓库

bash
cd xxxxx.git
git push --mirror xxxxx.git

4、删除本地代码

bash
cd ..
rm -rf xxxxx.git

二、常用命令

sh
# 1、检索最新代码
git  pull

2、检索单个文件
git checkout 文件

3、提交代码
git add 文件,可以使用*

4、commit代码
git commit -m "备注"

5、提交分支

git push origin HEAD:refs/for/master


git push -u origin master


6、查看分支
git branch


7、恢复代码到没有提交之前的代码

git reset HEAD^


git reset HEAD


8、git查看状态
git status

9、git add的撤销
git reset HEAD 如果后面什么都不跟的话 就是上一次add 里面的全部撤销了
git reset HEAD XXX/XXX/XXX.Java 就是对某个文件进行撤销了


第一次没有入库,再次提交代码
git commit --amend -m "message"


回退到之前的某个版本
git reset messageID


git 删除
git rm -f XXX


git 冲突解决:
git stash    备份当前的工作区的内容,从最近的一次提交中读取相关内容,让工作区保证和上次提交的内容一致。同时,将当前的工作区内容保存到Git栈中。
git pull
git stash pop   从Git栈中读取最近一次保存的内容,恢复工作区的相关内容。由于可能存在多个Stash的内容,所以用栈来管理,pop会从最近的一个stash中读取内容并恢复。


gibash中切换目录使用cd /d/....




把本地其他分支合并到当前分支
git merge branchname


// 分支使用

查看本地、远程所有分支
git branch -a

切换分支
git checkout master

将远程分支信息获取到本地
git fetch

将远程分支映射到本地命名为local-branchname  的一分支。
git checkout -b local-branchname origin/remote_branchname

删除本地分支
git branch -d 分支名

删除远程分支    
方法一
git push origin --delete <branchName>

方法二
推送一个空分支到远程分支,其实就相当于删除远程分支
git push origin :<branchName>




文件名大小写不一致配置
git config core.ignorecase false


回退到当前某个版本
git checkout d98a0f565804ba639ba46d6e4295d4f787ff2949 src/main/main.c



提交删除的文件
git add -A .


git 回退某个版本
git reset --hard <commit_id>

删除某些错误分支
先回退到需要的版本,然后使用下面命令
git push origin HEAD --force



git修改远程地址
git remote set-url origin git@gitlab.heroera.com:hibest/hibest_server_common.git


查看git仓库地址:
git remote -v


本地分支合并远程分支解决冲突
git merge origin/分支名称   解决完了  在提交就行了




使用Git进行Clone或者Pull程序的时候会提示,
 
SSL certificate problem: unable to get local issuer certificate
 
这个是由于Git默认开启了SSL验证,关闭即可;
解决方式:

git config --global http.sslVerify false
执行以上git命令,关闭ssl验证。

三、本地配置多个ssh key问题

1、生成 ssh key

打开git bash,输入以下命令生成key

sh
ssh-keygen -t rsa -C "your_email@youremail.com"

# 直接一步到位输入到文件夹中
ssh-keygen -t rsa -C "3028213607@qq.com " -f ~/.ssh/id_rsa_gittee_zf

2、复制到github加入key

3、本地加入私钥

sh
 ssh-add ~/.ssh/id_rsa_github

4、新建config

touch ~/.ssh/config

sh
# 配置git.github.net
Host github.com
    HostName github.com
    IdentityFile ~/.ssh/id_rsa_github
    PreferredAuthentications publickey
    User 362109875@qq.com

# 配置gitLab
Host gitlab.hi-coffice.com
    IdentityFile ~/.ssh/id_rsa
    PreferredAuthentications publickey
    User 123456@qq.com

5、测试

sh
ssh -T git@gitlab.hi-coffice.com

ssh -vT git@gitlab.hi-coffice.com

6、删除全局

sh
git config --global --unset user.name 
git config --global --unset user.email

7、每个仓库下面单独配置

sh
git config user.name "liang" 
git config user.email "123456@qq.com"

git config user.name "mm-bt" 
git config user.email "362109875@qq.com"

四、Git修改分支名称

sh
1、修改本地分支
git branch -m oldbranch newbranch

2、 本地推送到远程
git push origin newbranch

3、删除远程老的分支
git push --delete origin oldbranch
或者在线删除

五、git关联项目

Git global setup

sh
git config --global user.name "liang"
git config --global user.email "123456@qq.com"

Create a new repository

sh
git clone git@gitlab.heroera.com:druid/test20190516.git
cd test20190516
touch README.md
git add README.md
git commit -m "add README"
git push -u origin master

Existing folder

sh
cd existing_folder
git init
git remote add origin git@gitlab.heroera.com:druid/test20190516.git
git add .
git commit -m "Initial commit"
git push -u origin master

Existing Git repository

sh
cd existing_repo
git remote add origin git@gitlab.heroera.com:druid/test20190516.git
git push -u origin --all
git push -u origin --tags

六、git代码统计

1天代码统计

sh
git log --since=1.day.ago --author="123456@qq.com" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -

git log --since=5.day.ago --author="123456@qq.com" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -

之前的代码统计

sh
git log --author="373183800@qq.com" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -

固定期间
git log --since ==2017-10-31 --until=2017-11-01 --author="1149449034@qq.com" --pretty=tformat: --numstat | gawk '{ add += $1 ; subs += $2 ; loc += $1 - $2 } END { printf "added lines: %s removed lines : %s total lines: %s\n",add,subs,loc }' -

Released under the MIT License.