Git 基本命令

Git First-Time Setting

git config --global user.name "flymemory"
git config --global user.email cc@icy.asia

这里的 user.name 其实可以设成跟 git 账号相同,这样在 git push 和 git pull 的时候,就不会再问 username,而是直接输入 password。

git config --list

Git Initialization

然后就可以对你要 git 的目录做初始化了。

git init

Git lifecycle

今天仔细研究了一下官方 Document 里的这个图,还是很有意思的。

lifecycle

首先,当我创建一个新文件的时候,它是 untracked 状态。

然后,我可以用 git add 让它进入 staged 状态。

接着,如果我 commit 了一次,它就是一个 unmodified 的 file。

这个基础上再做修改,它就是 Modified,but not staged for commit。

这个时候,如果我不再次 git add,它是不会被 commit 的。也就是说,git add 之后做的修改,必须再 git add 一次,否则会保留之前 git add 时候的那个 snapshot。

最后,如果在 local 段删除了一个 file(rm),你是没法 git add 的,这时候要用 git rm,然后再 commit。

重命名可以用 git mv file_from file_to 的格式。

常用 Git 命令

git status
git add *.c
git add *
git rm readme
git commit -m "first commit"

如果漏 commit 了文件

git commit -m "daily update"
git add abc.txt
git commit --amend

如果多 git add 了文件

git reset HEAD <file>

如果想放弃对某个文件的修改,让它回到上一个 commit 的状态

git checkout -- [file]

增加 Remote Repository

git remote add [repository] [url]
git remove -v

这个时候会看到两个 repository,但 url 相同,一个是 fetch,一个是 push,可以理解为两种不同的权限,fetch 是 read,push 是 write,你可能只有 read-only 权限。

Git fetch VS Git pull

从上一次 git clone 算起,到今天为止的所有新的 update,都会被下载下来,不同的是,如果你本地也有做修改,fetch 不会主动 merge 到 local,而 pull 就会,所以看你的需要。

Git push

git push origin master
git push [repository] [branch]

查看 repository

git remote
git remote show [repository]

重命名或删除 repository

git remote mv [repository_from] [repository_to]
git remote rm [repository]

如果遇到各种难以解决的冲突,想用服务器覆盖本地(注意,覆盖了,本地的修改就真的没了)

git reset --hard
git pull origin master

 

Leave a Comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.