git 操作大全

Linux下的安装:

1、redhat、fradora,centos安装 yum install –y git

2、 Debian、Ubuntu安装 sudo apt-get install git 、 sudo apt-get install git-core

3、源码安装: 先从Git官网下载源码,然后解压,依次输入:./config,make,sudo make install这几个命令安装就好了

Windows安装:

1、下载msysgit

2、安装

3、始菜单里找到“Git”->“Git Bash”,蹦出一个类似命令行窗口的东西,就说明Git安装成功

4、 $ git config --global user.name "Your Name" $ git config --global user.email "[email protected]"

创建一个仓库:

创建目录:mkdir learngit 切换至新建目录:cd learngit 将目录转为git仓库:git init

添加文件到仓库

添加文件到Git仓库,分两步: 第一步,使用命令git add <file>,注意,可反复多次使用,添加多个文件; 第二步,使用命令git commit,完成。 注意: git commit 需要加上-m 添加本次注释

实验步骤:

1、修改文件内容

2、git add <file>

3、git commit –m ’ddd’

4、重复以上操作多次

5、查看git日志 git log

6、 git reset --hard HEAD^(注意:--hard为强制恢复,慎用, HEAD代表当前版本, ^上一个,~100向前100个 ,亦可使用commitid)

7、 git reflog(查看未来某个版本)

工作区(Working Directory) 就是在电脑里能看到的目录 版本库(Repository) 工作区有一个隐藏目录.git,这个不算工作区,而是Git的版本库 Git的版本库里存了很多东西,其中最重要的就是称为stage(或者叫index)的暂存区,还有Git为我们自动创建的第一个分支master,以及指向master的一个指针叫HEAD git status 查看仓库状态

git diff HEAD -- readme.txt 查看工作区和版本库里面最新版本的区别

git checkout – file 丢弃工作区的修改 一种是readme.txt自修改后还没有被放到暂存区,现在,撤销修改就回到和版本库一模一样的状态;

一种是readme.txt已经添加到暂存区后,又作了修改,现在,撤销修改就回到添加到暂存区后的状态。

总之,就是让这个文件回到最近一次git commit或git add时的状态 git reset HEAD file 可以把暂存区的修改撤销掉(unstage),重新放回工作区 git rm test.txt 用于删除一个文件。

如果一个文件已经被提交到版本库,那么我们永远不用担心误删,但是要小心,我们只能恢复文件到最新版本,会丢失最近一次提交后你修改的内容

git 远程仓库:

实验步骤:

第1步:创建SSH Key。

在用户主目录下,看看有没有.ssh目录,如果有,再看看这个目录下有没有id_rsa和id_rsa.pub这两个文件,如果已经有了,可直接跳到下一步。

如果没有,打开Shell(Windows下打开Git Bash),创建SSH Key:ssh-keygen -t rsa -C [email protected]

第2步:登陆GitHub,打开“Account settings”,“SSH Keys”页面: 然后,点“Add SSH Key”,填上任意Title,在Key文本框里粘贴id_rsa.pub文件的内容

登陆GitHub,然后,在右上角找到“Create a new repo”按钮,创建一个新的仓库

在本地的learngit仓库下运行命令: $ git remote add origin [email protected]:michaelliao/learngit.git

在本地的learngit仓库下运行命令: $ git remote add origin [email protected]:michaelliao/learngit.git

git push -u origin master #第一次推送master分支的所有内容 每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改

我们已经知道,每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。截止到目前,只有一条时间线,在Git里,这个分支叫主分支,即master分支。HEAD严格来说不是指向提交,而是指向master,master才是指向提交的,所以,HEAD指向的就是当前分支。 git checkout -b dev 创建dev分支,然后切换到dev分支 git checkout命令加上-b参数表示创建并切换,相当于以下两条命令:

git branch dev git checkout dev git branch命令会列出所有分支,当前分支前面会标一个*

git checkout master 以切换回master分支

git merge dev 合并dev分支到master分支

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

创建+切换分支:git checkout -b <name>

合并某分支到当前分支:git merge <name>

删除分支:git branch -d <name>

查看分支:git branch 创建分支:git branch <name> 切换分支:git checkout <name> 创建+切换分支:git checkout -b <name> 合并某分支到当前分支:git merge <name> 删除分支:git branch -d <name>

远程仓库操作:

1、创建裸仓库:cd至裸仓目标目录执行 git init --bare git.rep

2、创建git用户(非登陆用户): 将git的shell修改为/usr/bin/git-shell

3、cd到仓库目录中的hook目录中修改post-receive和post-update文件: 新增两行:cd 代码仓目标目录 env –i git pull

4、在代码仓目标目录执行:git clone 裸仓路径

5、将客户端公钥加入到:/home/git/.ssh/authorized_keys 中 本地仓库执行:git clone 裸仓路径 其他同github

钩子什么时候被执行,Git预定义了触发时机: ClientSide hooks: 1 pre-commit,当执行commit动作时先执行此hook,可以用此hook做一些检查,比如代码风格检查,或者先跑测试。 2 prepare-commit-msg, 当commit时需要输入message前会触发此hook,可以用此hook来定制自己的default message信息。 3 commit-msg,当用户输入commit的message后被触发,可以用此hook校验message的信息,比如是否符合规定,有没有cr等。 4 post-commit, 当commit完成后被触发,可以用此hook发送notification等。 5 pre-rebase, rebase之前会被触发,可以用此hook来拒绝所有的已经push的commits进行rebase操作。 6 post-merge, 当merge成功后,会触发此hook。 7 pre-push, 当push时,remote refs被更新,但是在所有的objects传输前被触发。 8 pre-auto-gc, 当git gc --auto执行前被触发。在垃圾回收之前做一些验证或备份是挺不错的。

ServerSide hooks: 1 pre-receive, 当收到push动作之前会被执行。 2 update, 也是收到push动作之前被执行,但是有可能被执行多次,每个branch一次。 3 post-receive, 当push动作已经完成的时候会被触发,可以用此hook来push notification等,比如发邮件,通知持续构建服务器等。 记住所有的hook都应该是可被执行的。 chmod u+x your_hook 所以你可以用shell脚本,perl,python等写钩子。

猜你喜欢

转载自www.cnblogs.com/nanyu/p/9292069.html