git学习

进公司实习之前打算恶补一下基础操作

作为一个小萌新进公司实习很慌张啊,偷偷摸摸补点课.

一般而言git操作分为几个关键步骤
1)在本地创建一个仓库 并 git init
2)然后将仓库 git remote add origin git@…… 和远程仓库关联
3)关联之后从远程仓库pull到本地 保持 两仓库一致
4)也可以 将项目文件add到本地 然后提交修改之后 push到远程

git的一些基本操作

1
2
3
4
5
$ mkdir learngit
$ cd learngit
$ pwd
/users/bubble/learngit
# 创建一个仓库目录
1
2
$ git add readme.txt
# 对于仓库中的文件,用add将其添加到仓库
1
2
3
$ git init
Initialized empty Git repository in /Users/michael/learngit/.git/
# 仓库初始化 其中 .git 用于跟踪管理版本
1
2
3
4
5
$ git commit -m "wrote a readme file"
[master (root-commit) eaadf4e] wrote a readme file
1 file changed, 2 insertions(+)
create mode 100644 readme.txt
# 其中-m 代表你这次提交的改动说明
1
2
$ git status
# 让我们可以查看仓库的动态
1
2
$ git diff
# 让我们可以查看仓库做了哪些改动
1
2
3
4
5
6
7
HEAD指向的版本就是当前版本,因此,Git允许我们在版本的历史之间穿梭,使用命令git reset --hard commit_id。

也可以直接使用 git reset --hard HEAD^ 代表传到上个版本 或者HEAD~100 代表前100个版本

穿梭前,用git log可以查看提交历史,以便确定要回退到哪个版本。

要重返未来,用git reflog查看命令历史,以便确定要回到未来的哪个版本。
1
2
3
4
5
git status 可以查看当前仓库状态如果有文件 Changes not staged for commit 代表他被修改了
如果有文件状态 Untracked files: 代表他总来没有被添加过 因此需要 git add

一般而言 git add 是将文件添加至暂存区,然后 git commit 将其发布到分支
一般修改后的文件不用 git add 添加至暂存区,是不会被commit 提交的
1
2
3
4
5
场景1:当你改乱了工作区某个文件的内容,想直接丢弃工作区的修改时,用命令git checkout -- file。

场景2:当你不但改乱了工作区某个文件的内容,还添加到了暂存区时,想丢弃修改,分两步,第一步用命令git reset HEAD <file>,就回到了场景1,第二步按场景1操作。

场景3:已经提交了不合适的修改到版本库时,想要撤销本次提交,参考版本回退一节,不过前提是没有推送到远程库。
1
2
3
4
删错了,因为版本库里还有呢,所以可以很轻松地把误删的文件恢复到最新版本:
$ git checkout -- test.txt
git checkout其实是用版本库里的版本替换工作区的版本,无论工作区是修改还是删除,都可以“一键还原”
命令git rm用于删除一个文件。如果一个文件已经被提交到版本库,那么你永远不用担心误删,但是要小心,你只能恢复文件到最新版本,你会丢失最近一次提交后你修改的内容。
1
2
3
4
5
6
7
要关联一个远程库,使用命令git remote add origin git@server-name:path/repo-name.git;

关联后,使用命令git push -u origin master第一次推送master分支的所有内容;

此后,每次本地提交后,只要有必要,就可以使用命令git push origin master推送最新修改;

分布式版本系统的最大好处之一是在本地工作完全不需要考虑远程库的存在,也就是有没有联网都可以正常工作,而SVN在没有联网的时候是拒绝干活的!当有网络的时候,再把本地提交推送一下就完成了同步,真是太方便了!
1
2
3
4
5
6
$ git clone git@github.com:michaelliao/gitskills.git
Cloning into 'gitskills'...
remote: Counting objects: 3, done.
remote: Total 3 (delta 0), reused 0 (delta 0), pack-reused 3
Receiving objects: 100% (3/3), done.
# 从远程库克隆列表
1
2
3
4
5
6
7
8
9
10
11
12
13
Git鼓励大量使用分支:

查看分支:git branch

创建分支:git branch <name>

切换分支:git checkout <name>

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

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

删除分支:git branch -d <name>
1
远程仓库时,需要在本地目录下找到.ssh,然后找到id_rsa和id_rsa.pub两个文件,其中id_rsa是私钥,id_rsa.pub是公钥,我们需要将id_rsa.pub中的内容放在github的ssh秘钥池中,github保有你的ssh公钥,当你在发送版本信息时,github才能知道你是否为合法修改者。你可以将家中,公司电脑的秘钥都让github收入,这样就可以多方修改。